The typical process, when a customer calls a call center, is as follows:                Customer explains problem to agent        Agent solves problem, takes some action and writes up any relevant notes        Agent moves to the next call.        
It is desirable to accurately assign reasons to calls and other interactions between parties for many reasons, for example in order to ensure that the call reason is resolved.
For some call reasons it may be possible to automatically determine with some accuracy the reasons for the call from the actions of the agent. An agent may use an application running on an agent device such as a computer to record details about a call and perform actions on behalf of the caller such as processing a payment. The application may be part of a system operating at the call center. If a call center system generated an automatic code PAY then it may be automatically assumed that the call was about payments. In this example code PAY may be generated automatically whenever the agent manually makes a payment on the customer's account and a call reason “payment” may be automatically assigned. Such examples lend themselves to using a system of rules to automatically identify call reasons and thereby categorize calls. However they are limited to the accuracy of the rule.
It is possible to categorize calls automatically using any of a set of defined rules, the agents' contemporaneous notes, speech e.g. converted to text, as well as any system codes that may be generated during the call denoting the actions taken by the agent. The rules may define binary relationships between call features and call category, e.g. if code ‘REFCREDIT’ is present, then call category is REFUND.
Many call reasons are far more difficult to determine. There may only be clues from the agent's contemporaneous notes or the agent's or caller's speech where the presence of certain keywords may each slightly increase the probability of a particular call reason. In situations such as this, where there are many small clues that add up to a weight of evidence suggesting a particular call reason, then simple rules become difficult to specify and clumsy to use.
In a system for automatically analyzing call center data, data may be loaded at intervals, e.g. nightly, running through a pipeline where many aggregations are performed on the data, including the assignment of call reasons to calls. The assigned call reasons may then be used in various automated processes.
The use of pre-defined, e.g. binary, rules is not an optimal solution for many reasons including:                They need considerable time, possibly a number of months, for tuning to avoid too many false positives or false negatives.        They do not work well for call reasons where there is no clear associated action from the agent.        The setup process needs to be repeated in full for different call center applications, e.g. banking, retail, etc.        